package com.zyl.blog.common.strategy;

import com.zyl.blog.common.annotation.Sensitive;

/**
 * 身份证号脱敏策略
 * 保留前6位和后4位，中间用*填充
 * 例如：110101********1234
 * @version v1.0
 * @ProjectName: Personal_Blog_Server
 * @Package: com.zyl.blog.common.strategy
 * @ClassName: IdCardSensitiveStrategy
 * @Author FinalFantasy
 * @Date 2025/9/8-10:41
 */
public class IdCardSensitiveStrategy extends AbstractSensitiveStrategy {

    /**
     * 身份证号脱敏实现
     * 保留前6位和后4位，中间用*填充
     */
    @Override
    public String desensitize(String value, Sensitive annotation) {
        // 如果注解中指定了前缀和后缀长度，则使用注解配置，否则使用默认值
        if (annotation.prefixLen() == 0 && annotation.suffixLen() == 0) {
            return mask(value, 6, 4, annotation.maskChar());
        }
        return super.desensitize(value, annotation);
    }
}